旧游无处不堪寻
无寻处,惟有少年心
『计算机的组成与设计』-计算机概要与技术

特别喜欢下面机械工业出版社出版者的话

文艺复兴以降,源远流长的科学精神和逐步形成的学术规范,使西方国家在自然科学的各个领域取得了垄断性的优势;也正是这样的优势,使美国在信息技术发展的六十年间名家辈出,独领风骚。

在最近的中兴制裁风波中,充分体现了,核心技术落后就要陷于受制于人的窘境。我们应正视与发达国家的差距,不要以为出现微信,淘宝这样相对有实力的软件,就产生中国就已经在计算机科学方面处于世界领先地位的假象。如果没有核心竞争力,一切都是空中楼阁。
不论硬件、软件都应有深入的研究,即使我们可能只是软件开发人员,有许多概念只有我们理解硬件之后才会对软件中某些相关概念有更深刻的理解体会。
言归正传,我希望做一个计算机组成与设计系列,记录一下关于软硬件接口的方方面面。


电子计算机自 20 世纪 40 年代后期诞生以来,其创新型的竞争带来了史无前例的进步。
如果运输业能够以计算机工业的速度发展,那么我们只需要花费一美分就可以在一秒钟之内,从纽约赶到伦敦。
沿着农业革命,工业革命的发展,计算机促使了人类的第三个革命 - 信息革命。计算机革命一直在向前推进。每当计算成本降低 10 倍,计算机的发展机遇就会增加 10 倍。

计算应用的分类及其特性


计算机主要包括以下三类应用

  1. 个人计算机(Personal Computer,PC)
  2. 服务器(Server)服务器的制造技术和桌面计算机差不多,但能提供更强的计算存储以及 I/O 能力。(高端服务器称为超级计算机,由上千台处理器组成,内存为 terabyte 级)
  3. 嵌入式计算机(Embedded Computer)是数量最多的一类计算机。嵌入式对成本或功耗有严格限制,对故障非常敏感,因此一般通过简单设计来获得可靠性。

注意: 许多嵌入式处理器使用处理器核,处理器核是利用硬件描述语言(Verilog 或 VHDL)描述的处理器版本,使得设计者能够把其他专用硬件与之集成起来制造在一块芯片上。

后 PC 时代

  1. 代替 PC 的是个人移动设备(Personal Mobile Device,PMD)
  2. 云计算(Cloud Computing)替代了传统的服务器,他依赖于被称为仓储规模计算机(Warehouse Scale Computer,WSC)的巨型数据中心,在网络上提供服务的大规模服务器集群,运营商根据需求来租用不同数量的服务器

计算机系统结构中的 8 个伟大思想


  1. 面向摩尔定律的设计
    计算机设计者面临的一个永恒的问题就是摩尔定律(Moore’ Law)驱动的快速开发。
    摩尔定律指出: 单芯片上的集成度每 18-24 个月翻一番。计算机设计者必须预测其设计完成时的工艺水平,而不是设计开始时的。
  2. 使用抽象简化设计
    提高硬件和软件生产率的主要技术之一就是使用抽象(abstraction)来表示不同的设计层次,在高层次中看不到低层次细节,只能看到简化模型。
  3. 加速大概率事件
    加速大概率事件远比优化小概率事件更能提高性能。
  4. 通过并行提高性能
  5. 通过流水线提高性能
  6. 通过预测提高性能
  7. 存储器层次
  8. 通过冗余提高可靠性

程序概念入门


计算机中的硬件只能执行极为简单的低级指令。从复杂的应用程序到简单的指令需要经过几个软件层次来将复杂的高层次操作逐步解释或翻译成简单的计算机指令,这就是伟大思想抽象的一个例子。
软硬件层次结构: 外层应用软件,内层硬件,中间是系统软件(System Software)
系统软件是提供常用服务的软件,包括操作系统编译程序加载程序汇编程序等。

对现代计算机必不可少的两个系统软件是:

  1. 操作系统 是用户程序和硬件之间的接口,为用户提供各种服务和监控功能。操作系统最重要的作用是:
  • 处理基本的输入输出。
  • 分配外存和内存。
  • 为多个应用程序提供共享的计算机资源的服务
  1. 编译程序 完成另外的功能: 把高级语言编写的程序翻译成硬件能执行的指令

从高级语言到硬件语言

我们通常认为的计算机语言就是二进制数
指令(instruction)指能够被计算机识别并执行的位串。之后的一篇我们会讲解为什么位串既能表示指令又能表示数据,这是现代计算机的基础(存储程序概念)。
第一代程序员直接使用二进制数与计算机通信。这种机器可以直接理解的二进制语言称为机器语言 machine language
随后设计人员发明了一种汇编程序(assembler)的软件,将助记符形式的指令自动翻译成对应的二进制数。这种符号语言至今仍在使用,即汇编语言 assembly language
最后设计人员有发明了高级语言 high-level programming language和编译程序。
高级语言的程序通过编译程序编译为汇编语言程序,再通过汇编程序汇编为机器语言程序,在由计算机执行

硬件概念入门


任何一台计算机的基础硬件都要完成相同的基本功能:输入数据输出数据处理数据存储数据
组成据算计的 5 个经典部件(冯诺伊曼结构)是:输入输出存储器数据通路(运算器)控制器。最后两个部件合称为处理器 Centeral Processor Unit,CPU
数据通路(datapath)负责完成算术运算,控制器(control)负责指导数据通路,存储器和 I/O 设备按照指令正确执行

运算器

运算器用于算术运算和逻辑运算。
算术运算: 加减乘除等
逻辑运算: 与或非等
其核心部件是 ALU,算术逻辑单元有两个输入一个输出。

计算机执行一条指令的步骤

  1. 取指(Fetch)
  2. 译码(Decode)
  3. 执行(Execute)
  4. 回写(Write-back)

CPU 与主存之间通过系统总线相连(包括控制总线地址总线数据总线)。并且 CPU 内存有内部总线用于内部数据传递。
现代计算机主存一般按字节编址,也就是每个存储单元可以存储 8bit。

  • 地址总线用来寻址,如果地址总线的宽度为 n,则可以管理的存储单元最多为 2n
  • 数据总线用来传输数据,一般数据总线宽度为存储单元宽的整数倍
  • 控制总线用来控制读,写完成信号

内存(memory)是程序运行时的存储空间,同时也用于保存程序运行时所使用的数据。
内存由 DRAM 芯片组成。DRAM 是 dynamic random access memory 的缩写。与串行访问内存(磁带)相比,不论数据存储在什么位置,DRAM 访问内存所需要的时间都相同。
处理器内部使用的是另一种存储器 - 缓存 cache memory。缓存是一种小而快的存储设备。它采用另一种技术称为 SRAM,也就是 static random access memory。速度比 DRAM 快,集成度低,价格高。
注意: 在这里我们说的缓存(cache memory)和我们在应用层说的缓存(cache)是两个概念。

硬件和底层软件之间的接口,被命名为计算机的指令集体系结构(instruction set architecture)。
提供给应用程序员的基本指令集和操作系统接口合称为应用二进制接口(ABI)。

数据安全

计算机内存是易失性存储器,一旦关掉电源,所有数据就丢失了,与之不同的是,掉电之后仍可保存数据的存储器,称为非易失性存储器。
我们将易失性存储器称为主存(main memory),将非易失性存储器称为二级存储器(secondry memory)。DRAM 在主存占主导地位,磁盘在二级存储器占主导地位。闪存(flash memory)在移动设备代替了磁盘。

现代计算机主板发展

现代计算机主板发展
现代计算机主板发展
现代计算机主板发展

其他

  • SoC(系统芯片,System on Chip)是一个将电脑或其他电子系统集成到单一芯片的集成电路。如果在 PC 时代我们说一个电脑的核心是 CPU,那么在智能终端时代,手机的核心就是这个 SoC。